Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2017, 00:48
Аспирант
Отправить личное сообщение для chellas88 Посмотреть профиль Найти все сообщения от chellas88
 
Регистрация: 23.10.2017
Сообщений: 37

Не срабатывает запись в сессию на аякс
Всем привет, есть код:

function addCart(id){
	$.ajax({
		type: "POST",
		url: "src/js/add_cart.php",
		data: {"id": id},
		cache: false,
		success: function(response){
			
		}
		
		
	});
	
};

$(function(){
	$('.in_cart').click(function(){
		var item = $(this).attr('id');
		addCart(item);
	});
});



add_cart.php
$id = addslashes($_POST['id']);
$sql = mysql_query("SELECT * FROM `products` WHERE `id` = $id") or die (mysql_error());
$product = mysql_fetch_assoc($sql);
		$_SESSION['cart'][$id] = 1;
		$_SESSION['total_price'][$id] = $product['price'];


Не срабатывает запись в обработчике. Может быть проблема в возврате ответа, что туда нужно записать?
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2017, 01:15
Аспирант
Отправить личное сообщение для chellas88 Посмотреть профиль Найти все сообщения от chellas88
 
Регистрация: 23.10.2017
Сообщений: 37

Сори, сессию не стартанул. Тема закрыта
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2017, 05:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$id = addslashes($_POST['id']) mysql_real_escape_string($_POST['id']), а для чисел достаточно приведение к integer;
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2017, 15:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

Сообщение от laimas
mysql_real_escape_string
mysqli_real_escape_string
"mysql_" deprecated.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2017, 15:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Nexus
mysqli
Он использует оригинальное расширение. Другой вопрос, что о нем надо забыть.

Да если бы только это было плохо, а ведь все плохо в коде.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2017, 15:23
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

laimas, все поначалу так кодили.
Да и не все так плохо.
_post.id неправильно обрабатывается. Если ожидается int, то можно сделать так:
if(!is_numeric($_POST['id']))
    exit('Bad request');

$id=intval($_POST['id']);

Уведомление об ошибке sql-выполнения запроса увидит каждый.
Не проверяется есть ли вообще такой продукт в бд.
Ну и корзина в сессии хранится.
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2017, 16:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

if($id = (int)$_POST['id']) {
    //запрос по $id и если есть товар
   //....
}


Сообщение от Nexus
все поначалу так кодили.
Не все, те кто мультики Поповых и им подобных смотрят, те да. )
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2017, 17:23
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

Сообщение от laimas
Не все
Ок, может и не все.
Лично я почти также кодил ("почти", потому что я вообще данные от клиента не проверял), когда начинал изучать PHP - свой первый ЯП.
Ответить с цитированием
  #9 (permalink)  
Старый 12.11.2017, 09:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Даже и не знаю как это комментировать. ) Ну логика то должна подсказывать, что прежде чем брать с собой зонтик нужно как минимум выглянуть в окно, так ведь? А чем это отличается от обязательности проверки наличия данных в базе или достоверности полученных данных? Ничем.
Ответить с цитированием
  #10 (permalink)  
Старый 12.11.2017, 11:55
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

laimas, у меня полностью отсутствовали знания об уязвимостях, поэтому я думал, что проверки наличия данных в бд вполне достаточно.
Логика подсказывала, что если запрос ничего не вернул (или зафейлился), значит полученные от клиента данные не верны
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko Элементы интерфейса 6 03.08.2017 12:43
php ооп и запись в сессию korih Серверные языки и технологии 1 12.07.2016 21:32
Аякс запрос (передача id) - есть непонятка espltd Элементы интерфейса 4 26.06.2015 12:45
Несколько аякс запросов OlegOlegOleg1980 AJAX и COMET 6 15.06.2014 17:21
не срабатывает на второй раз ajax[отправка формы] vovs jQuery 5 21.09.2010 12:12